﻿using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using plust.Clases;
using plust.Persistencia;
using plust.Content;
using FirstFloor.ModernUI.Windows.Controls;


namespace plust.Content
{
    /// <summary>
    /// Interaction logic for ModificarProductoDialog.xaml
    /// </summary>
    ///  
    public partial class ModificarProductoDialog : UserControl
    {
        private Producto producto;
        private List<int> idsCategoria = new List<int>();
        private PersistenciaDB persistencia = new PersistenciaDB();
       
        public ModificarProductoDialog()
        {
            InitializeComponent();   
            this.Loaded += OnLoaded;
        }

        void OnLoaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(this.cbCategoria);
        }

        public ModificarProductoDialog(Producto producto) : this()
        {
            DataTable data = persistencia.obtenerCategorias();

            this.producto = producto;
            tbCodigoBarras.Text = producto.sku;
            tbPrecioNeto.Text = producto.precio_neto.ToString();
            tbPrecioVenta.Text = producto.precio_venta.ToString();
            tbStockCritico.Text = producto.stock_critico.ToString();
            tbDescripcion.Text = producto.descripcion;

            
            if (data != null)
            {
                for (int i = 0; i < data.Rows.Count; i++)
                {
                    this.cbCategoria.Items.Add(data.Rows[i]["nombre_categoria"]);
                    this.idsCategoria.Insert(i, int.Parse(data.Rows[i]["id_categoria"].ToString()));
                }
            }

            if (data != null)
            {
                for (int i = 0; i < idsCategoria.Count; i++)
                {   
                    if ( idsCategoria[i] == this.producto.id_categoria)
                    {
                        this.cbCategoria.SelectedIndex = i;
                        break;
                    }
                }
            }
        }

        private void btActualizar_Click(object sender, RoutedEventArgs e)
        {
            persistencia = new PersistenciaDB();
            this.producto.sku = this.tbCodigoBarras.Text;
            this.producto.precio_neto = Convert.ToInt32(this.tbPrecioNeto.Text);
            this.producto.precio_venta = Convert.ToInt32(this.tbPrecioVenta.Text);
            this.producto.stock_critico = Convert.ToInt32(this.tbStockCritico.Text);
            this.producto.descripcion = this.tbDescripcion.Text;
            this.producto.id_categoria = this.idsCategoria[this.cbCategoria.SelectedIndex];

           
                if (persistencia.actualizarProducto(this.producto))
                {
                    new ModernDialog
                    {
                        Title = "CORRECTO",
                        Content = "Producto actualizado.",

                    }.ShowDialog();
                }
                else
                {
                    new ModernDialog
                    {
                        Title = "ERROR",
                        Content = "Se ha producido un error inesperado."
                    }.ShowDialog();
                }
            
            Window.GetWindow(this).Close();
        }

        private void btCancelar_Click(object sender, RoutedEventArgs e)
        {
            Window.GetWindow(this).Close();
        }

    } 
}
